#pragma once

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <memory>
#include "SnRender.h"
#include "string"
namespace Sivin {

  class WindHandle;

  class SnWindow {

  public:
    explicit SnWindow(int width, int height, std::string name);
    SnWindow(const SnWindow &window) = delete;
    SnWindow &operator=(const SnWindow &window) = delete;
    ~SnWindow();

  public:
    void setRender(std::unique_ptr<SnRender> render);

    bool init();

    void show();

  public:
    const std::unique_ptr<WindHandle> &getHandle() const {
      return mWindHandle;
    }

  private:
    int mWidth;
    int mHeight;
    std::string mName;
    std::unique_ptr<WindHandle> mWindHandle{nullptr};
  };


}// namespace Sivin
